Frequently Asked Questions - AIX Toolbox for Linux Applications Updated Feb 25, 2005 Table of Contents General 1. Is there a mailing list? 2. How do I report a bug? 3. How do I request that a tool be added to the Toolbox? 4. Why isn't my favorite tool in the Toolbox? 5. Why aren't the tools in installp format? 6. What compiler was used to build the Toolbox? 7. Many of these tools have been available on AIX for years. Why the Toolbox? 8. Can I get a CD? 9. Is there a list of known problems? 10. Why is this release of the Toolbox incompatible with the version released in December, 2000? 11. How often will the contents of the Toolbox be updated? 12. I requested an application a long time ago, and it still isn't in the Toolbox. Why not? 13. What is the status of rpm images for AIX 4.3.3? 14. How does library versioning work in the AIX Toolbox? RPM 1. Why does rpm.rte take so long to install? 2. Where can I find more information on using rpm? 3. I have gtk+ installed but I can't link to it? Why not? 4. I downloaded an RPM, but rpm won't install it. Why not? 5. rpm won't install an RPM because it is missing a dependency. How do I find out how to resolve that dependency? 6. I installed a shared library using installp, but RPM does not recognize that the support is installed. What do I do? 7. How do I remove all of this stuff? 8. What is the purpose of the AIX-rpm package that I see installed? 9. I have AIX 5.2, but the rpm I want has "aix4.3.ppc" in the name. Is there a version for 5.2? Apps 1. What level of gcc is provided with the Toolbox? 2. I have the Visual Age compiler. Can I use it with the Toolbox? 3. What's info? 4. Why won't KDE start? 5. Where can I get OpenSSL (and apps that use it)? 6. What happened to OpenSSH? Why won't it install on my system? ------------------------------------------------------------------------ General 1. Q: Is there a mailing list? A: The public mailing list is aixtoolbox-list@lists.sourceforge.net. You may subscribe to the list at http://sourceforge.net/projects/aixtoolbox. Only list subscribers may post to the list. 2. Q: How do I report a bug? A: Go to the project page at http://sourceforge.net/projects/aixtoolbox, click on the "bugs" tab, click on "Submit bug", and fill in the report. Be sure to respond to the confirmation notice which you will receive so that the bug report will be visible. Remember, the images are "as-is" so there is no guarantee that any given bug will be worked on. If you have a suggested fix to your bug, or to any other bug on the list, feel free to post your solution. This increases the chance that the fix will be incorporated. 3. Q: How do I request that a tool be added to the Toolbox? A: It is very similar to reporting a bug as above, but specify a category of "Request" and a Bug Group of "Package Requests." When this happens, your request will be added to a request list (a "wish-list") and the request item will then be closed. Be forewarned, the Toolbox content is generally not being expanded, with only rare exceptions; few such requests will be fulfilled. Better to use the Toolbox tools and build the packages that you desire. 4. Q: Why isn't my favorite tool in the Toolbox? A: There are thousands of open source tools in the world. The Toolbox is meant to provide a core set of some of the most common tools, particularly development tools and libraries plus a few other miscellaneous popular packages. By providing core development tools, the Toolbox provides the infrastructure for users to build a wide variety of other open source packages that may be desired. 5. Q: Why aren't the tools in installp format? A: A primary goal of the AIX Toolbox is to increase the affinity with Linux systems. RPM is a common packaging system on Linux platforms (though it is not on every Linux platform) and most popular open source projects are available as source RPMS (SRPMS), making it relatively straightforward to build new packages for the Toolbox. 6. Q: What compiler was used to build the Toolbox? A: In general, projects are almost all compiled with the IBM Visual Age Compiler (VAC), though there are a few exceptions which are compiled using the GNUPro compiler provided with the Toolbox. The VAC compiler is favored because it tailored to AIX and produces much smaller binaries with better performance. If you are going to build binaries yourself, you may also want to favor VAC if you have a license for it. For C++ applications, you will have to use VAC to link with Toolbox libraries. If you do not have VAC, you can use GNUPro C and C++ in the Toolbox, but any other C++ libraries you are linking to will also need to be rebuilt with GNUPro. (That is, you cannot mix-and-match C++ compilers). 7. Q: Many of these tools have been available on AIX for years. Why the Toolbox? A: The Toolbox is provided as a convenience to AIX customers. Every AIX 5L customer will get a CD containing the Toolbox software, and AIX 5L customers on Power have the option of installing GNOME or KDE as the default desktop. The Toolbox provides common development tools which help customers build a wide variety of open source packages beyond what the Toolbox itself offers. 8. Q: Can I get a CD? A: The CD only comes with new AIX shipments; it cannot be ordered independently. The best approach is to download individual images from the FTP site, which ensures you get the most recent provided versions. 9. Q: Is there a list of known problems? A: The reported bugs are accessible via the project page at http://sourceforge.net/projects/aixtoolbox. Click on the "Bugs" tab to access the list. There are also some known problems listed in the README. 10. Q: Why is this release of the Toolbox incompatible with the version released in December, 2000? A: See the README for a full explanation. Basically, there was an implementation flaw in shared library handling in the first release which was incompatible with preexisting open source binaries built for AIX and which could not support multiple versions of a library. 11. Q: How often will the contents of the Toolbox be updated? A: The current plans are to update the CD delivered with AIX three or four times a year, though not precisely on quarterly schedules. The FTP site is updated sporadically throughout the year any time we have images approved for release. 12. Q: I requested an application a long time ago, and it still isn't in the Toolbox. Why not? A: Could be any number of reasons. It could be a legal issue (the license may have problems, or there may be some suspect copyrights or potential patent infringements). It could be a priority issue (e.g. an app that doesn't appear on major Linux distributions has much less value in what is, after all, a "Toolbox for Linux Applications"; or it may be functionally similar to something else already in AIX or the Toolbox). We encourage you to download such apps that you want yourself and build yourself a copy. There is nothing special we do to build the images that could not be done outside of IBM on a system with the Toolbox. 13. Q: What is the status of rpm images for AIX 4.3.3? A: Beginning in 2004, Toolbox images will be built only for AIX 5.1 and up. AIX 4.3.3 users are encouraged to migrate to AIX 5.1 or 5.2. No new images will be produced for 4.3.3. However, there are no imminent plans to remove the existing 4.3.3 images from the FTP site (though they are subject to removal at any time without notice). If you choose to stay on the AIX 4.3.3 level, you will need to get your images directly from the FTP site, because the Webpage download table will gradually take on AIX 5.1 images. To make this easier, a final list of all RPMS for 4.3.3 can be found at ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/data/433.finallist. Also available is a copy of the final Toolbox README containing 4.3.3 info: ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/README.aix433. 14. Q: How does library versioning work in the AIX Toolbox? A: (This is a technical question which may not be of interest to general users). Due to some differences between linking on AIX and Linux, the creation of shared objects & shared libraries is handled a little differently. In the AIX Toolbox, a shared object is created and then archived into a shared library. (A shared library is simply an archive library with at least one shared object as a member). So if you have a shared object named libfoo.so.0, in the AIX Toolbox you will find it inside the archive libfoo.a, and when linking and executing a binary, the necessary symbols will be found within that shared object, which is written as libfoo.a(libfoo.so.0). Ideally, most updates of packages to new versions will be completely compatible with earlier versions. When compatibility is preserved, the library version does not need to change; that way, something linked against an older libfoo.a(libfoo.so.0) will continue to execute cleanly with a newer libfoo.a(libfoo.so.0) when the example package updates to a newer version. Unfortunately, a package will occasionally break compatibility with older versions of its libraries. When this happens, a problem arises: if you simply replace the old libfoo.so.0 in libfoo.a, older applications using the old version may stop working. To get around this, the package creates a new version of the shared object, libfoo.so.1. Now, newer applications can use the new version ".so.1", while older applications can continue using version ".so.0". This works because the libfoo.a library is now created with both members inside. But how do newly linked applications know which shared object member to use? This is handled by setting the LOADONLY flag in the older shared object. With this flag set, the object can continue to be loaded by applications that need it, but the linker will know to ignore this older object. You can see whether the flag is set or not with the "dump -ov [filename]" command. For info on changing the LOADONLY flag, see the manual page for the AIX "strip" command. Some packages avoid this whole versioning issue by creating a completely new and separate package version. For a real example, consider the "libxml" package and the "libxml2" package. Because they are not compatible, a new package was created with a new archive name: libxml.a versus libxml2.a. Because the package used this approach, versioning of the original library was not needed. RPM 1. Q: Why does rpm.rte take so long to install? A: rpm generally handles dependencies between packages by auto-detecting shared library requirements. It uses its own database to determine the shared library support provided on the system. The /usr/sbin/updatevpg program is run at rpm.rte installation time to add information about shared libraries installed via installp into the RPM database. /usr/sbin/updtvpkg examines every file delivered by installp to determine if it provides shared library support and that can take quite a while on older systems or on systems where many installp packages have been installed. See question #8 below for more in depth. 2. Q: Where can I find more information on using rpm? A: For basic information, run rpm --help. For detailed information, particularly if you want to produce your own RPMs, the best source of information is the rpm home page, http://www.rpm.org. Of particular interest is the useful book "Maximum RPM" by Edward Bailey, which can be found online at http://www.rpm.org/max-rpm/. 3. Q: I have gtk+ installed but I can't link to it? Why not? A: gtk+ and several other libraries had to be built with run-time linking enabled. In order to link with libraries which have been built using run-time linking, specify the -brtl flag to the linker. In some Makefiles and configure steps, this is done by setting LDFLAGS="-Wl,-brtl". If a library is available with a .so extension rather than a .a extension, then it was built using run-time linking support. run-time linking techniques are generally used when dependencies between shared objects cannot be easily resolved at link time. 4. Q: I downloaded an RPM, but rpm won't install it. Why not? A: It was probably corrupted during the download. Make sure that you downloaded it in binary form. 5. Q: rpm won't install an RPM because it is missing a dependency. How do I find out how to resolve that dependency? A: There is an RPM search facility at http://rpmfind.net which can help you determine which package provides a particular file or shared library. 6. Q: I installed a shared library using installp, but RPM does not recognize that the support is installed. What do I do? A: Run /usr/sbin/updtvpkg. 7. Q: How do I remove all of this stuff? A: Use the contrib/destroyRPMS script available on the CD and FTP site. It will remove all installed rpms, followed by rpm itself. Or, to deinstall individual rpms, run "rpm -e ". 8. Q: What is the purpose of the AIX-rpm package that I see installed? A: See also rpm question #1 above. The "AIX-rpm" package doesn't actually install anything, and in general you can just ignore it (but DO NOT deinstall it!). It is a "virtual package", created by /usr/sbin/updtvpkg when rpm.rte itself is installed. It is also regenerated any time you rerun updtvpkg. So what is it for? Rpm keeps a database of every installed package and the files provided by each package. However, rpm has no knowledge about the installp-format installed images, meaning it is not naturally aware of the files that make up the AIX operating system itself. This presents a dependency problem: most binary rpm packages depend on basic AIX libraries like libc.a, but rpm is not aware that these libraries are available because they are not provided by any rpm package. AIX-rpm solves this problem. The updtvpkg script scans all installed installp-format images for available shared libraries and shells, and then it creates the AIX-rpm package which tells rpm that these libraries are indeed available. Thus, rpm thinks that AIX-rpm provides libc.a, though technically it is provided by AIX itself. Then when an rpm package is being installed that requires libc.a (as most do), rpm knows that the requirement is met because it finds it in AIX-rpm. If you are curious to see everything AIX-rpm "provides" on behalf of the AIX system, you can run "rpm -q --provides AIX-rpm". 9. Q: I have AIX 5.2, but the rpm I want has "aix4.3.ppc" in the name. Is there a version for 5.2? A: That same image is also for AIX 5.2. Because of binary compatibility, an RPM image built on AIX 4.3.3 will install and run on AIX 4.3.3, AIX 5.1, and AIX 5.2. The "aix4.3" in the name means that is the lowest level of AIX that will accept the package. Likewise, an image that says "aix5.1" will install on either AIX 5.1 and 5.2. Apps 1. Q: What level of gcc is provided with the Toolbox? A: The Toolbox used to contain "gcc" and "g++" built from GNUPro sources, a modification of the original gcc source from another vendor. The version numbers were unusual values like "2.9.aix51.020209". As of version 3.3.2, we have built directly from the GNU gcc/g++ sources as found on the FSF website. If you have the old versions installed, you may want to update now. (The GNUPro "g++" package has been replaced with "gcc-c++" but it is still the GNU C++ compiler). The version change also affects "binutils" and "gdb". As of binutils 2.14 and gdb 6.0, these packages are also no longer built from GNUPro sources. They too are built from the GNU source at the FSF website. 2. Q: I have the Visual Age compiler. Can I use it with the Toolbox? A: Yes. See general question #6 above. 3. Q: What's info? A: info is a documentation system common to Linux. Some applications install information into the info system rather than provide man pages. 4. Q: Why won't KDE start? A: Check to make sure that you have X11.samples.apps.clients installed. If you're on 4.3.3, then you need to have fixes installed for X11.base.lib and X11.base.rte. For further information, see the README. 5. Q: Where can I get OpenSSL (and apps that use it)? A: Because of the cryptographic content in OpenSSL, it is made available at a controlled site which requires registration. A few other apps are available at this site as well, though all of these are also available on the main site in non-ssl versions (except OpenSSH; see Q6). Go to: http://www6.software.ibm.com/dl/aixtbx/aixtbx-p to register and access these images. 6. Q: What happened to OpenSSH? Why won't it install on my system? A: If you are on AIX 5.1 (or greater), there is a supported installp format version of OpenSSH available. You can get it at web site: http://sourceforge.net/projects/openssh-aix. If you have a version of the older Toolbox OpenSSH, deinstall it before installing the installp image. There are still openssh rpm images on the controlled site (see Q5 above), but they are only there for 4.3.3 because 4.3.3 does not have a supported OpenSSH image. If you are on 5.1, these rpms will not install. Use the installp version instead.